package com.ts.api.module.distribute.service;

import com.ts.api.module.distribute.entity.DistributeLinkPO;
import com.ts.api.module.distribute.entity.bo.DistributeLinkBO;
import eu.bitwalker.useragentutils.UserAgent;

import java.util.List;

/**
 *  分配代理链接
 */
public interface DistributeService {

    /**
     * 获取子链接列表
     *
     * @param  uniqueCode
     * @return List
     */
    List<DistributeLinkPO> list(String uniqueCode);

    /**
     * 检测当前链接组是否变动，如果变动触发修改逻辑
     *
     * @param  list
     * @return List
     */
    List<DistributeLinkBO> checkLinkAndModify(List<DistributeLinkPO> list);

    /**
     * 获取最终跳转链接对象
     *
     * @param  list
     * @return String
     */
    DistributeLinkBO getDistributeLink(List<DistributeLinkPO> list, List<DistributeLinkBO> listBO);

    /**
     * 插入链接组访问量(PV或者UV)
     *
     * @param  ip
     * @param  userAgent
     * @param  distributeLinkBO
     * @return int
     */
    void insertGroupVisitor(String ip, UserAgent userAgent, DistributeLinkBO distributeLinkBO);

    /**
     * 插入子链接访问量(PV或者UV)
     *
     * @param  ip
     * @param  userAgent
     * @param  distributeLinkBO
     * @return int
     */
    void insertLinkVisitor(String ip, UserAgent userAgent, DistributeLinkBO distributeLinkBO);
}
